package org.hy.persistence.group;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.hy.domain.group.GJob;
import org.hy.domain.group.GJobComment;

/**
 * 工作映射器
 * @author Administrator
 *
 */
public interface GJobMapper {

	/**
	 * 添加工作
	 * @param GJob工作对象
	 * @return
	 */
	int insertGJob(GJob GJob);
	
	/**
	 * 添加评论
	 * @param GJobComment 评论对象
	 * @return
	 */
	int insertGJobComment(GJobComment GJobComment);
	
	/**
	 * 更新工作,包括工作内容,
	 * @param GJob工作对象
	 * @return
	 */
	int updateGJob(GJob GJob);
	
	/**
	 * 更新评论,包括评论内容,
	 * @param GJobComment 评论对象
	 * @return
	 */
	int updateGJobComment(GJobComment GJobComment);
	
	/**
	 * 删除工作
	 * @param idGJob
	 * @return
	 */
	int deleteGJob(int idGJob);
	
	/**
	 * 删除评论
	 * @param idGJobComment
	 * @return
	 */
	int deleteGJobComment(int idGJobComment);
	
	/**
	 * 查找工作
	 * @param id 工作id
	 * @return 工作对象
	 */
	GJob findGJobById(int id);
	
	/**
	 *根据id查找评论
	 * @param id 评论id
	 * @return
	 */
	GJobComment findGJobCommentById(int id);
	
	/**
	 * 查找小组成员发布的工作列表
	 * @param idGm 用户idGm
	 * @param offset 偏移量
	 * @param size 数目
	 * @return
	 */
	List<GJob> findGJobByIdGm(@Param("idGm")int idGm,@Param("offset")int offset,@Param("size")int size);

	/**
	 * 查找小组的工作
	 * @param gid 小组id
	 * @param offset 偏移量
	 * @param size 数目
	 * @return 工作列表
	 */
	List<GJob> findGJobByGid(@Param("gid")int gid,@Param("offset")int offset,@Param("size")int size);

	/**
	 *  查找用户发表的工作列表，包含各个小组的工作列表
	 * @param uid 用户id
	 * @param offset 
	 * @param size
	 * @return 工作列表
	 */
	List<GJob> findGJobByUid(@Param("uid")int uid,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 根据id查找问题及回复
	 * @param id 问题id
	 * @param offset
	 * @param size
	 * @return
	 */
	GJob findGJobWithCommentById(@Param("id")int id,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 查找用户发布的问题或回复.
	 * @param uid 用户id
	 * @param offset
	 * @param size
	 * @return
	 */
	List<GJob> findGJobWithCommentByUid(@Param("uid")int uid,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 查找小组成员发布的小组工作列表
	 * @param idGm 小组成员编号
	 * @param offset 
	 * @param size
	 * @return 工作列表
	 */
	List<GJob> findGJobWithCommentByIdGm(@Param("idGm")int idGm,@Param("offset")int offset,@Param("size")int size);
	
	/**
	 * 查找小组发布的工作及回复
	 * @param gid 小组id
	 * @param offset
	 * @param size
	 * @return
	 */

	List<GJob> findGJobWithCommentByGid(@Param("gid")int gid,@Param("offset")int offset,@Param("size")int size);
	
	
	
	/**
	 * 统计小组工作数目
	 * @param gid小组id
	 * @return
	 */
	int countGJob(int gid);
	
	/**
	 * 统计工作的回复数
	 * @param GJobIds工作数组
	 * @return
	 */
	List<Integer> countGJobComment(int[] GJobIds);
	
	
	
}
